সি বিটিওয়াজ অপারেটর(C Bitwise Operator)

Computer Programming - সি প্রোগ্রামিং (C Programming) সি ব্যাসিক (C Basic Tutorial) |
546
546

এই অধ্যায়ে আপনি সি প্রোগ্রামিং এ সকল বিটিওয়াজ অপারেটর(Bitwise Operator) সম্বন্ধে জানবেন


সেন্ট্রাল প্রোসেসিং ইউনিট(CPU) এর মধ্যে এরেথম্যাটিক লজিক ইউনিট(ALU) এ সকল গাণিতিক ক্রিয়াকলাপ যেমন- যোগ-বিয়োগ, গুণ-ভাগ ইত্যাদি বিট-লেভেলে সম্পন্ন হয়। এই বিট-লেভেল(bit-level) অপারেশন সম্পন্ন করার কাজেই বিটওয়াইজ অপারেটর ব্যবহৃত হয়।


 

সি প্রোগ্রামিং বিটয়াইজ অপারেটর-সমূহ

মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)

অপারেটরঅপারেটরের অর্থউদাহরণ(x=10 এবং y=4)ফলাফল
&Bitwise ANDx& y = 0 (0000 0000)0
|Bitwise ORx | y = 14 (0000 1110)14
^Bitwise exclusive ORx ^ y = 14 (0000 1110)14
~Bitwise complement~x = -11 (1111 0101)-11
<<Shift leftx<< 2 = 42 (0010 1000)42
>>Shift rightx>> 2 = 2 (0000 0010)2

বিটওয়াইজ AND(&) অপারেটর

 

বিটওয়াইজ অপারেটরের দুটি অপারেন্ডের বিট যদি 1 হয় তাহলে বিটওয়াইজ AND অপারেটর এর আউটপুট 1 হবে।

কিন্তু যদি বিটওয়াইজ অপারেটর এর যেকোনো একটি অপারেন্ড 0(শূন্য) হয় তাহলে আউটপুট 0(শূন্য) হবে।


 

বিটওয়াইজ AND(&) অপারেটর এর গাণিতিক ব্যাখ্যা

10 = 0000 1010 (বাইনারিতে) 4  = 0000 0100 (বাইনারিতে) 10 এবং 4 এর বিট অপারেশন  0000 1010 & 0000 0100  ________  0000 0000  = 0 (দশকমিকে)
 

উদাহরনঃ সি প্রোগ্রামে বিটওয়াইজ AND অপারেটরের ব্যবহার

kt_satt_skill_example_id=993

বিটওয়াইজ OR(|) অপারেটর

বিটওয়াইজ অপারেটরের দুটি অপারেন্ডের যেকোনো একটির বিট যদি 1 হয় তাহলে বিটওয়াইজ OR অপারেটর এর আউটপুট 1 হবে।

কিন্তু যদি বিটওয়াইজ অপারেটর এর দুটি অপারেন্ড-ই 0(শূন্য) হয় তাহলে আউটপুট 0(শূন্য) হবে। সি প্রোগ্রামিং এ | কে বিটওয়াইজ OR অপারেটর বলা হয়।


 

বিটওয়াইজ OR(|) অপারেটর এর গাণিতিক ব্যাখ্যা

10 = 0000 1010 (বাইনারিতে) 4  = 0000 0100 (বাইনারিতে) 10 এবং 4 এর বিট অপারেশন  0000 1010 | 0000 0100  ________  0000 1110  = 14 (দশকমিকে)  
 

উদাহরনঃ সি প্রোগ্রামে বিটওয়াইজ OR(|) অপারেটর এর ব্যবহার।

 

kt_satt_skill_example_id=994

 

বিটওয়াইজ XOR(^) অপারেটর

XOR এর পূর্ণরুপ হলো exclusive OR । বিটওয়াইজ অপারেটর এর দুটি অপারেন্ড যদি পরস্পর বিপরীত হয় তাহলে বিটওয়াইজ XOR অপারেটর এর আউটপুট 1 হবে।

কিন্তু যদি বিটওয়াইজ অপারেটর এর দুটি অপারেন্ড-ই একই রকম হয় তাহলে আউটপুট 0(শূন্য) হবে। সি প্রোগ্রামিং এ ^ কে বিটওয়াইজ XOR অপারেটর বলা হয়।


 

বিটওয়াইজ XOR অপারেটর গাণিতিক ব্যাখ্যা

10 = 0000 1010 (বাইনারিতে) 4  = 0000 0100 (বাইনারিতে) 10 এবং 4 এর বিট অপারেশন  0000 1010 ^ 0000 0100  ________  0000 1110  = 14 (দশকমিকে)
 

উদাহরনঃ সি প্রোগ্রামে বিটওয়াইজ XOR(^) অপারেটর এর ব্যবহার

kt_satt_skill_example_id=995

বিটওয়াইজ পূরক(~) অপারেটর

 

বিটওয়াইজ পূরক(compliment) অপারেটর হলো উনারী(unary) অপারেটর যা কেবল মাত্র একটি অপারেন্ডের উপর কাজ করে। ইহা 1 কে পরিবর্তন করে 0 করে এবং 0 কে পরিবর্তন করে 1 করে। ইহাকে ~ এর মাধ্যমে চিহ্নিত করা হয়।

10 =  0000 1010 (বাইনারিতে) 10 এর বিটওয়াইজ পূরক অপারেটর ~ 0000 1010  ________  1111 0101  = 245 (দশমিকে)

10 এর বিটওয়াইজ কমপ্লিমেন্ট 245 এর পরিবর্তে -11 হয়েছে। কিন্তু কেন?

কারণ যেকোনো পূর্ণসংখ্যা n এর জন্য বিটিওয়াইজ কমপ্লিমেন্ট -(n+1) হবে। ইহা বুঝার জন্য আপনাকে প্রথমে 2'স কমপ্লিমেন্ট(Two's complement) সম্মন্ধে জানতে হবে।


 

2's Complement

বাইনারি সংখ্যায় 2's complement অপারেটর ব্যবহৃত হয়। একটি সংখ্যার 2's complement হলো ঐ সংখ্যার পূরকের সাথে ১ যোগ করলে যা হয় তার সমান। উদাহরনস্বরুপঃ

   দশমিক         বাইনারি        1's comliment      2's কমপ্লিমেন্ট     0            0000 0000      1111 1111     -(1111 1111+1) = -0000 0000 = -0(দশমিকে)     1            0000 0001      1111 1110     -(1111 1110+1) = -1111 1111 = -255((দশমিকে))     245          1111 0101      0000 1010     -(0000 1010+1) = -1111 0101 = -11(দশমিকে)

নোটঃ 2'স কমপ্লিমেন্ট এর ক্ষেত্রে হাতের অঙ্ককে অবজ্ঞা করা হয়। অর্থাৎ ১ যোগ করার পরে শেষ অংকে অবশিষ্ট থাকলে তাকে হিসাবের বাইরে রাখা হয়।

10 এর বিটওয়াইজ কমপ্লিমেন্ট 245 এর পরিবর্তে -11 হয়েছে। কারণ 10 এর বিটওয়াইজ কমপ্লিমেন্ট হলো 245 (দশমিকে)। আবার 245 এর 2's complement হলো -11, সুতরাং 245 এর পরিবর্তে -11 আউটপুট হয়েছে।


 

যেকোনো সংখ্যা N এর বিটওয়াইজ কমপ্লিমেন্ট হলো -(N+1)

 N এর bitwise complement = ~N (N এর  2's complement ফর্মে) এবং ~N এর 2'complement = -(~(~N)+1) = -(N+1)
 

উদাহরণঃ সি প্রোগ্রামে বিটওয়াইজ complement(~) অপারেটর এর ব্যবহার

kt_satt_skill_example_id=996

বিটওয়াইজ Left Shift( <<) অপারেটর

Left shift অপারেটর সমস্ত বিটকে নির্দিষ্ট সংখ্যক বিট বামে সরিয়ে দেয়। ইহাকে << এর মাধ্যমে প্রকাশ করা হয়।

200 = 11010100 (বাইনারিতে) 200<<1 = 1100100000 (বাইনারিতে এবং এক বিট দ্বারা Left shift হয়েছে। ) 200<<0 =11010100 (0 বিট দ্বারা Left Shift হয়েছে। ) 200<<2 = 1100100000 (বাইনারিতে) =800(দশমিকে) 200<<3 = 11001000000 (bainarite) =1600(দশমিকে)
 

উদাহরনঃ সি প্রোগ্রামে লেফট শিফট(Left Shift) অপারেটর এর ব্যবহার

kt_satt_skill_example_id=997

বিটওয়াইজ Right Shift(>>) অপারেটর

Right shift অপারেটর সমস্ত বিটকে নির্দিষ্ট সংখ্যক বিট ডানে সরিয়ে দেয়। ইহাকে >> এর মাধ্যমে প্রকাশ করা হয়।

200 = 11001000 (বাইনারিতে) 200>>1 = 01100100 (বাইনারিতে এবং 1 বিট দ্বারা Right shift হয়েছে।) 200>>0 = 11010100 (কোনো শিফট হয়নি) 200>>2 = 00110010 (বাইনারিতে) = 50(দশমিকে) 200>>3 = 00011001 (বাইনারিতে) = 25(দশমিকে)
 

উদাহরনঃ সি প্রোগ্রামে লেফট শিফট(Left Shift) অপারেটর এর ব্যবহার

kt_satt_skill_example_id=999

 

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion